/**
 * 刚刚用到的T[P],在ts中叫做 索引查询类型
 * 用来查询类属性的类型
 */

type Props = {
    a:number
    b:string
    c:boolean
}


type TypeA = Props['a']
// type TypeAs = Props['d'] //d不存在
//Props['a']表示查询类型Props中属性'a'对应的类型number,所以,TypeA的类型为number
//注意: []中的属性必须存在于被查询类型中,否则报错


// keyof获取对象中所有的键
// keyof一般获取某种类型的键，直接返回联合类型
// keyof后面跟一种类型，不能跟具体的值，也常常与typeof一起使用

type Partial2<T> = {
    [P in keyof T]?: T[P]  //T[P]=>Props[P], p => Props中任意的一个键
}
type PartialProps = Partial2<Props>









//同时查询多个索引的类型
type TypeAA = Props['a'|'b'] // string | number 如果a和b都为number,TypeAA=number
// keyof获取对象中所有的键
type TypeBB = Props[keyof Props] // string | number | boolean

















